package com.huilian.iotbox.data.dto;

import com.huilian.iotbox.data.po.CommodityGroup;
import com.huilian.iotbox.data.vo.*;
import com.mysql.cj.log.Log;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * @author ：yjzhang
 * @date ：Created in 2022/7/5 0005 21:04
 * @description：
 * @version: 1.0
 */
@Data
public class CommodityDto extends QueryParam implements Serializable {
    private Long id;

    /**
     * 场地Id
     */
    private Integer merchantStoreId;

    /**
     * 用户Id
     */
    private Integer userId;


    /**
     * 商品分组ID
     */
    private Integer commodityGroupId;

    /**
     * 零售价
     */
    private BigDecimal retailPrice;
    /**
     * 纳入售币营业额，0/null：不纳入；1：纳入
     */
    private Boolean includeCoinSalesTurnover;
    
    /**
     * 严格库存管理，0/null：不开启，可以扣到负数；1：开启，最小到0
     */
    private Boolean strictInventoryManagement;

    /**
     * 商品名称
     */
    private String name;

    /**
     * 充值币
     */
    private Integer rechargeCoin;

    /**
     * 赠送币
     */
    private Integer giveCoin;

    /**
     * 套餐推荐层次  1 是最前
     */
    private Integer sort;

    /**
     * 是否推荐
     */
    private Boolean recommend;

    /**
     * 隐藏，线上购买看到，但纸钞机可以用到
     */
    private Boolean hide;

    /**
     * 默认套餐，1、5、10、20、50、100元套餐。金额不能修改，但币数可以修改
     */
    private Boolean isDefault;

    /**
     * 成本价
     */
    private BigDecimal costPrice;

    /**
     * 开启兑换
     */
    private Boolean openExchange;

    /**
     * 积分兑换价格
     */
    private Integer integralConversionPrice;

    /**
     * 游戏币兑换价格
     */
    private Integer coinConversionPrice;

    /**
     * 彩票兑换价格
     */
    private Integer lotteryConversionPrice;

    /**
     * 开启回收
     */
    private Boolean openRecovery;

    /**
     * 回收价格
     */
    private Integer recoveryPrice;

    /**
     * 规格
     */
    private String spec;

    /**
     * 条形码
     */
    private String barCode;

    /**
     * 删除状态：0、未删除；1、已删除
     */
    private Boolean deleteStatus;

    /**
     * 图片
     */
    private String fileName;

    /**
     * 描述
     */
    private String desc;

    /**
     * 上架用户端
     */
    private Boolean clientTerminal;

    /**
     * 上架超级兑币机
     */
    private Boolean superCurrencyChangerTerminal;

    /**
     * 上架POS机
     */
    private Boolean posTerminal;

    /**
     * 上架积分商城
     */
    private Boolean integralMallTerminal;
    /**
     * 积分商城自助兑换
     */
    private Boolean integralMallSelfService;

    /**
     * 判断是向上排序增加还是向下排序增加
     **/
    private String isSort;

    private Date createTime;

    private Date updateTime;
    /**
     * 上架的门店
     */
    private List<MerchantStoreVo> stores;

    /**
     * 游玩项目
     */
    private List<CommodityProjectVo> checkPlayList;

    /**
     * 套餐分组
     */
    private CommodityGroup commodityGroups;

    /**
     * 套餐分组
     */
    private CommodityGroup commodityGroup;

    /**
     * 套票类型
     */
    private Integer ticketPackageType;

    /**
     * 分组类型ID，1、游戏币（固定），2、通用，3、套票
     */
    private Integer type;
    /**
     * 指定到期时间
     */
    private Date specifyDueTime;

    /**
     * 首次使用后开始计算过期天数
     */
    private Boolean resetExpirationDate;


    /**
     * 首次使用后多少天过期
     */
    private Integer numberOfDays;

    /**
     * 总游玩次数
     */
    private Integer TotalNumberOfPlay;

    /**
     * 限制每天核销次数
     */
    private Boolean quantityWrittenOff;

    /**
     * 每天核销次数
     */
    private Integer everydayQuantityWrittenOff;

    /**
     * 模糊查询 关键字
     */
    private String keywords;
    private Integer commodityGroupType;
    private Integer commodityStoreUpDownStatus;

    /**
     * 上下架状态
     */
    private Integer status;
    /**
     * 商品上下架ID
     */
    private Long commodityStoreUpDownId;

    /**
     * 排序规则
     */
    private Integer collation;
    /**
     * 能兑换
     */
    private Integer canBeExchanged;

    private BigDecimal donateBalance;

    private BigDecimal rechargeBalance;

    private Integer lottery;

    private Integer integral;
    /**
     * 购买的数量
     */
    private Integer num;

    private List<CommodityDto> commodityDtoList;
    private List<Long> commodityIdList = new ArrayList<>();


    private BigDecimal etCostPrice;
    private BigDecimal etRetailPrice;
    private Integer etStock;
    private Integer supplierId;
    private Integer groupId;
    private String groupName;
    private String goodsName;
    private Long commodityId;
    /**
     * 库存
     */
    private Integer stock;

    /**
     * 是否为自提
     */
    private Boolean isSelfMention;
    /**
     * 是否为直邮
     */
    private Boolean isDirectMail;

    /**
     * 上下架表id
     */
    private Long csudId;
    private String booleanOfPlay;
    private Integer amount;
    private Integer commoditySupplierId;
    private List<Integer> merchantStoreIdList;
    private Integer importType;

    /**
     * 是否自动生成条形码
     */
    private Boolean barCodeStatus;
    /**
     * 层级，如第一层、第二层
     */
    private Integer hierarchy;
    /**
     * 货道，如货道1、货道2
     */
    private Integer freightLane;

    private Integer existStock;

    private Integer reserveStock;

    /**
     * 是否启用库存预警
     */
    private Boolean enableWarnStock;

    /**
     * 预警库存
     */
    private Integer warnStock;
    /**
     * 机构id
     */
    private Integer agencyId;

    private Integer commodityStoreStatus;

    private Long memberStoreBalanceId;

    private List<Long> commodityStoreUpDownIdList;
    private String remark;
    private Integer branchType;
    private String unit;

    private Integer purchaseLimit;


    private Boolean isPurchaseLimitation;
    private String endTime;

    private Integer exchangeType;
    private BigDecimal originalPrice;

    private String deviceNo;

    private Boolean enabled;

    private Boolean csudStatus;
    /**
     * 每局多少币
     */
    private Integer rateEach;
    /**
     * 游戏时间，扭蛋机用到
     */
    private Integer gameTime;

    private List<CommodityItemVo> commodityItemVoList;

    /**
     * 会员售价
     * */
    private BigDecimal retailVIPPrice;

    private String commodityDetailFileName;

    private Integer deviceTypeId;
}
